package com.sh.utils;

import com.google.gson.Gson;
import com.sh.bean.MessageBean;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;

@Component // 声明为 Spring 组件
//@Log4j // 使用 Log4j 进行日志记录
@Slf4j
public class JmsMessageProducer {

    @Autowired // 自动注入 JmsTemplate 实例
    private JmsTemplate jmsTemplate;

    @Value(value = "${queueName}") // 从配置文件中注入队列名称
    private String queueName;



    /**
     * 发送消息到队列的方法
     * @param message MessageBean 类型的对象，需要发送的消息内容
     */
    @Async
    public void sendMessage(MessageBean message) {
        // 将 messagebean 转为 json 字符串
        Gson gson = new Gson();
        String jsonStr = gson.toJson(message);
        // 使用 JmsTemplate 的 convertAndSend 方法发送消息到队列
        jmsTemplate.convertAndSend(queueName, jsonStr);
        // 记录日志，显示发送的消息内容
        log.info("发送的消息: " + jsonStr);
//        System.out.println("发送的消息: " + jsonStr);
//        log.info("当前线程:  " + Thread.currentThread().getName());
    }
}
